python中二分法求平方和 python二分法求根号2 |
您所在的位置:网站首页 › python 二分法求根 › python中二分法求平方和 python二分法求根号2 |
解方程方法1. 梯度下降法(Gradient descent)python2. 牛顿迭代法(Newton's method)python3. 二分法 1. 梯度下降法(Gradient descent) 若要求根号下2,即要求解 x^2 - 2 = 0 的根, 也就是函数 要寻找损失函数的最低点就是找到曲线的最低点。在这里,我们使用了微积分里导数,通过求出函数导数的值,从而找到函数下降的方向或者是最低点(极值点)。 给x一个初始值,然后不断通过下式来更新x就可以逐渐逼近最优的x,这里的a代表步长,也就是学习率。 损失变化图 它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。 多数方程不存在求根公式,因此求精确根非常困难,甚至不可解,从而寻找方程的近似根就显得特别重要。方法使用函数的泰勒级数的前面几项来寻找方程的根。牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程 的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根,此时线性收敛,但是可通过一些方法变成超线性收敛。另外该方法广泛用于计算机编程中。 把 f(x )在点x_0 的某邻域内展开成泰勒级数 取其线性部分(即泰勒展开的前两项),并令其等于0 以此作为非线性方程 的近似方程,则其解为 假设 f(x) = x^2 - a 可以得到 这种方法可以很有效地求出根号 a的近似值:首先随便猜一个近似值 x,然后不断令 x 等于 x 和 a/x 的平均数,迭代个六七次后 x 的值就已经相当精确了。 例如,我想求根号 2 等于多少。假如我猜测的结果为 4,虽然错的离谱,但你可以看到使用牛顿迭代法后这个值很快就趋近于根号 2 了: ( 4 + 2/ 4 ) / 2 = 2.25 ( 2.25 + 2/ 2.25 ) / 2 = 1.56944… ( 1.56944…+ 2/1.56944…) / 2 = 1.42189… ( 1.42189…+ 2/1.42189…) / 2 = 1.41423… …. 这种算法的原理很简单,我们仅仅是不断用 (x, f(x)) 的切线来逼近方程的根。 一个数a的平方根小于等于a,使用二分法解决如下 class Solution3(): def mySqrt(self, x): if x==0: return 0 if x==1: return 1 left = 1 right = x while leftx: right = mid - 0.0001 else: left = mid + 0.0001 return right if __name__ == '__main__': print(Solution3().mySqrt(3))
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |